package service;

import entity.User;

import java.util.List;

/**
 * 用户服务接口
 * 负责提供用户注册、登录、上线离线等服务
 *
 * @author Mr.Alpaca
 * @version 1.0.0
 */
public interface UserService {
    /**
     * 验证传入的账号密码,进行用户登录
     *
     * @param id       用户账号
     * @param password 用户密码
     * @return 登录结果
     */
    boolean login(long id, String password);

    /**
     * 根据传入的参数,进行用户注册
     *
     * @param id       用户账号
     * @param password 用户密码
     * @param name     用户名
     * @return 注册结果
     */
    boolean register(long id, String password, String name);

    /**
     * 根据用户账号获取用户对象
     *
     * @param id 用户账号
     * @return 用户对象
     */
    User getUser(long id);

    /**
     * 获取当前在线用户列表
     *
     * @return 用户列表
     */
    List<User> getOnlineUserList();

    /**
     * 下线指定用户
     *
     * @param id 用户id
     */
    void offlineUser(long id);

    /**
     * 上线指定用户
     *
     * @param id 用户id
     */
    void onlineUser(long id);

    /**
     * 上线指定用户
     *
     * @param user 用户对象
     */
    void onlineUser(User user);

    /**
     * 群发消息,即发送消息聊天室全局留言板
     *
     * @param message 消息内容
     * @param user    用户
     */
    void multicast(String message, User user);

    /**
     * 获取聊天室全局留言板所有消息
     *
     * @return 留言板消息
     */
    String getMessageBoard();
}
